The ZUC streaming cipher algorithm has been adopted as the 3rd Generation Partnership Project (3GPP) Confidentiality and Integrity Algorithms 128-EEA3 and 128-EIA3. ZUC was developed by the Data Assurance and Communication Security Research Center of the Chinese Academy of Sciences (DACAS). ZUC has the potential for widespread usage especially for mobile applications.
ZUC is a Linear Feedback Shift Register (LFSR) based stream cipher that is computationally intensive. The LFSR uses five shift operations and six MOD (231−1) additions to develop a new input word. Selected bits of the LFSR are used to determine the next output word and to update a Finite State Machine (FSM) that maintains two 32-bit state words. A Bit-Reordering (BR) function selects eight 16-bit sections of the LFSR for the FSM update and output word formation. The FSM uses eight 8-bit S-BOX translations, as well as two 32-bit word propagate additions and two 32-bit word XOR functions. There are two S-BOX translation functions S0 and S1 that incur memory loads (table lookups) for a software implementation.
The ZUC specification, “Specification of the 3GPP Confidentiality and Integrity Algorithms 128-EEA3 & 128-EIA3. Document 2: ZUC Specification,” includes a software reference implementation of ZUC, which uses over 100 lines of C code. Even for optimized assembly code, a large number of cycles are needed to produce a byte of key-stream for ZUC. Moreover, software implementations generally involve a large number memory access. Thus, software implementations of ZUC do not provide sufficient speed and energy efficiency for a wide range of wireless applications.